package com.vca.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.vca.common.model.exhibition.Exhibition;
import com.vca.common.request.AdminCommonRequest;
import com.vca.common.request.ExhibitionAddRequest;
import com.vca.common.request.PageParamRequest;
import com.vca.common.response.AdminHeaderResponse;
import com.vca.common.response.ExhibitionAdminResponse;
import com.vca.common.response.ExhibitionResponse;
import com.vca.common.response.ExhibitionVoResponse;
import com.vca.common.vo.ExhibitionVo;

import java.util.List;

/**
 * <p>
 * 展览表 服务类
 * </p>
 *
 * @author chenBing
 * @since 2022-11-03
 */
public interface ExhibitionService extends IService<Exhibition> {

    /**
     * @Description:展览分页列表
     * @Author: chenBing
     * @Date: 2022/11/3
     */
    PageInfo<ExhibitionVo> getList(PageParamRequest pageParamRequest, String date);

    List<ExhibitionResponse> getListCalendar(String date);

    ExhibitionVo info(String language,Long exhibitionId);

    /**
     * @Description:展览列表
     * @Author: chenBing
     * @Date: 2022/11/16
     */
    ExhibitionVoResponse getListNoPage(String language);

    /**
     * 展览管理
     * @author Li
     * @date    2022/11/11 13:16
     */
    PageInfo getAdminList(AdminCommonRequest request, PageParamRequest pageParamRequest);

    /**
     * 修改排序
     * @param exhibitionId 展览id
     * @param sort 排序
     * @author Li
     * @date    2022/11/21 10:12
     * @return
     */
    boolean updateSort(Integer exhibitionId, Integer sort);

    /**
     * 修改限量
     * @param exhibitionId 展览id
     * @param seatCount 限量
     * @author Li
     * @date    2022/11/21 10:12
     * @return
     */
    boolean updateSeatCount(Integer exhibitionId, Integer seatCount);

    /**
     * 上架展览
     * @param exhibitionId 展览id
     * @author Li
     * @date    2022/11/21 10:12
     * @return
     */
    boolean courseOnShell(Integer exhibitionId);

    /**
     * 下架展览
     * @param exhibitionId 展览id
     * @author Li
     * @date    2022/11/21 10:12
     * @return
     */
    boolean courseOffShell(Integer exhibitionId);

    /**
     * 添加展览
     * @param request
     * @author Li
     * @date 2022/11/21 10:12
     * @return
     */
    boolean addTalk(ExhibitionAddRequest request);

    /**
     * 根据id获取讲座信息
     * @param exhibitionId
     * @author Li
     * @date    2022/11/22 10:25
     * @return
     */
    ExhibitionAdminResponse getTalk(Long exhibitionId);

    /**
     * @Description:修改讲座
     * @Author: Li
     * @Date: 2022/11/22 14:56
     */
    boolean updateTalk(ExhibitionAddRequest request);

    /**
     * 获得讲座头部数据
     * @author Li
     * @date 2022/11/23 09:16
     * @return
     */
    List<AdminHeaderResponse> getHeader();

    /**
     * 删除讲座
     * @author Li
     * @date 2022/11/23 09:16
     * @return
     */
    boolean deleteTalk(Long exhibitionId);

    List<Exhibition> getExhibitionsAndDelete(List<Long> ids);

    /**
     *@Description:查询当前月份的日程
     *@author:chenbing
     *@date 2023/1/28 16:06
     */
    List<Integer> getCalendar(Integer month,Integer year);
}
